Verifying C Cryptographic Protocol Implementations by Symbolic Execution
نویسندگان
چکیده
Many applications rely on complex cryptographic protocols for communicating over the insecure Internet (e.g., online banking, electronic commerce, social networks, etc). The C programming language is largely used in writing cryptographic software. Both the design of protocols and their C implementation are error prone. Recent years have seen a real progress in the formal verification of cryptographic protocols as illustrated by the development of several tools both in the symbolic model (Proverif [Bla01], AVISPA [ABB05], Hermes [BEJ05]) and in the computational model (CryptoVerif [Bla08], CertiCrypt [BGZB09], EasyCrypt [BGHB11]). There remains however a large gap between what we verify (the protocol usually described in a process algebra, as pi calculus for example) and what we rely on (the implementation which is usually done in a «real» language, like C). The need to verify the code is now well recognized, but only a few recent works try to propose solutions. One of the first attempts at cryptographic verification of C code is the CSur ([GLP05]): one extracts from a C program a set of Horn clauses that are then solved using a theorem prover. Some limits of this approach: 1) it can be used to prove secrecy, but it is not clear how one can apply the tool to handle authentication properties (the order of instructions is completely ignored); 2) the results that are obtained are sound only in the symbolic (Dolev-Yao) model of cryptography. A second line of research, based on symbolic execution ([Kin76]), is that of [CM11], [CM12]: [CM11] extends the KLEE test-generation tool ([CDE08]) by treating certain concrete functions, like cryptographic primitives, as symbolic functions, that is, their execution is avoided, and their behaviour is modelled via rewriting rules. However, their work does not extend the class of properties supported by KLEE, in particular they do not take into account how the inputs provided by an adversary depend on the knowledge learnt by the same adversary. [CM12] extends the previous work with a tainting mechanism that tracks information flows of data, but this work suffers from several limitations:
منابع مشابه
Efficient Symbolic Execution for Analysing Cryptographic Protocol Implementations
The analysis of code that uses cryptographic primitives is unfeasible with current state-of-the-art symbolic execution tools. We develop an extension that overcomes this limitation by treating certain concrete functions, like cryptographic primitives, as symbolic functions whose execution analysis is entirely avoided; their behaviour is in turn modelled formally via rewriting rules. Our code ru...
متن کاملVerifying Cryptographic Code in C: Some Experience and the Csec Challenge
The security of much critical infrastructure depends in part on cryptographic software coded in C, and yet vulnerabilities continue to be discovered in such software. We describe recent progress on checking the security of C code implementing cryptographic software. In particular, we describe projects that combine verification-condition generation and symbolic execution techniques for C, with m...
متن کاملVerifying Implementations of Security Protocols by Refinement
We propose a technique for verifying high-level security properties of cryptographic protocol implementations based on stepwise refinement. Our refinement strategy supports reasoning about abstract protocol descriptions in the symbolic model of cryptography and gradually concretizing them towards executable code. We have implemented the technique within a general-purpose program verifier VCC an...
متن کاملCryptographic Verification by Typing for a Sample Protocol Implementation
Type systems are effective tools for verifying the security of cryptographic protocols and implementations. They provide automation, modularity and scalability, and have been applied to large protocols. In this tutorial, we illustrate the use of types for verifying authenticity properties, first using a symbolic model of cryptography, then relying on a concrete computational assumption. (1) We ...
متن کاملSymbolic Bisimulation for the Applied Pi Calculus * Stéphanie Delaune
We propose a symbolic semantics for the finite applied pi calculus.The applied pi calculus is a variant of the pi calculus with extensions formodelling cryptographic protocols. By treating inputs symbolically, oursemantics avoids potentially infinite branching of execution trees due toinputs from the environment. Correctness is maintained by associatingwith each process a se...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2015